/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fritadorcorrente;

import br.com.fritadorcorrente.objetos.Comentario;
import br.com.fritadorcorrente.objetos.Email;
import br.com.fritadorcorrente.objetos.Mensagem;
import br.com.fritadorcorrente.objetos.dao.GenericoDAO;
import br.com.fritadorcorrente.utils.spring.Contexto;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.HttpUnitOptions;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.WebLink;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import java.io.Serializable;
import java.util.List;

/**
 *
 * @author manchini
 */
public class Fritador {

    public static void TestarFormulario(String urlSite, Email email) {

        WebConversation wc = new WebConversation();
        HttpUnitOptions.setScriptingEnabled(false);

        WebRequest request = new GetMethodWebRequest(urlSite);
        try {
            WebResponse response = wc.getResponse(request);

            WebForm[] forms = response.getForms();
            for (int i = 0; i < forms.length; i++) {
                WebForm webForm = forms[i];
                String[] parameterNames = webForm.getParameterNames();
                int aux = 0;
                for (int j = 0; j < parameterNames.length; j++) {
                    String string = parameterNames[j];

                    //Comentarios WordPress
                    if (string.equalsIgnoreCase("author")) {
                        aux++;
                    }
                    if (string.equalsIgnoreCase("email")) {
                        aux++;
                    }
                    if (string.equalsIgnoreCase("comment")) {
                        aux++;
                    }
                }

                //Se tiver os 3 é Porque é Wordpress
                if (aux == 3) {
                    Comentario comentario = Contexto.getContext().getBean(Comentario.class);
                    comentario.setDominio(getDominio(urlSite));
                    comentario.setMensagem(getMensagemAleatoria());
                    comentario.setUrl(urlSite);
                    
                    email.getMensagens().add((Comentario)Contexto.getContext().getBean(GenericoDAO.class).gravar(comentario));
                    
                    System.out.println("*******************************");
                    System.out.println("Comentando em : " + urlSite);
                    System.out.println("**************************************");
                    webForm.setParameter("author", email.getEmail());
                    webForm.setParameter("email", email.getEmail());
                    webForm.setParameter("comment", comentario.getMensagem().getMensagem());
                    webForm.submit();
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    public static WebLink[] listaLinks(String urlSite) {
        WebLink[] links = new WebLink[0];

        WebConversation wc = new WebConversation();
        HttpUnitOptions.setScriptingEnabled(false);

        WebRequest request = new GetMethodWebRequest(urlSite);
        try {
            WebResponse response = wc.getResponse(request);
            links = response.getLinks();

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            return links;
        }
    }

    public static String getDominio(String url) {
        url = url.replace("http://", "");

        int barra = url.indexOf("/");

        if (barra > -1) {
            return (url.substring(0, barra));
        } else {
            return (url.substring(0));
        }
    }
    
    
    public static Mensagem getMensagemAleatoria(){
        List<Serializable> listarTodos = Contexto.getContext().getBean(GenericoDAO.class).listarTodos(Mensagem.class);
        
        return (Mensagem) Contexto.getContext().getBean(GenericoDAO.class).carregar(Mensagem.class,((Mensagem) listarTodos.get(new Double(Math.random()*listarTodos.size()).intValue())).getCod());
        
    }
}
